package com.cfjjc.gz.usraccount.vo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

import com.cfjjc.gz.common.vo.BaseVO;

/**
 * 
 * 说明： 用户信息表的值对象类
 * 
 * @author  liuxun
 * @since 2012-03-06
 * @version 1.0
 */ 
public class A_USRVO extends BaseVO {

    /**
	 * 
	 */
	private static final long serialVersionUID = 2482059425996588444L;

	//作为主键的属性名列表
    private static String[] KEY_PROPERTY_NAMES = {  "usr_id" };

    private String usr_id; //用户ID   (主键)     

    private String login_name; //统一登录名      

    private String usr_type; //用户类型      

    private String usr_name; //用户姓名      

    private String org_id; //所属机构      

    private String phone; //固定电话      

    private String mobile; //手机号码      

    private String email; //邮箱      

    private String is_leader; //是否负责人      

    private String is_operator; //是否操作员      

    private String is_hide; //是否隐藏      

    private String usr_status; //用户状态      

    private String static_pwd_md5; //静态口令      
    
    private String release_form; //发放形式

    private String is_long_term; //是否长期有效      

    private String effect_time; //生效时间      

    private String expire_time; //失效时间      
    
    private String first_login; //是否首次登录

    private String usr_desc; //描述      

    private String node_id; //节点ID   
    
    private String time_policy_id; // 时间策略ID
    
	private String create_by; // 创建人

	private String create_at; // 创建时间

	private String update_by; // 更新人

	private String update_at; // 更新时间
    
    ////////////////////////////////以下为辅助字段///////////////////////////
    private String usr_type_decode; //用户类型 (decode)
    
    private String org_name; //	所属机构名称
    
    private String org_sequence; //机构排序号
    
    private String usr_status_decode;	//用户状态(decode)
    
    private String release_form_decode;//发放形式(认证方式)
    
    private String global_release_form; //公用属性，区分用户管理和凭证申请请求
    
    private String is_monitor; //是否监控
    
    private String auth_mode; // 认证方式
    
    private String password;	// 密码(注意：当认证方式为静态口令时，输入静态口令；当认证方式为动态口令（如RSA令牌，VASCO令牌）时，输入动态口令)
    
    private String new_static_pwd_md5; //新密码
    
    private String re_new_static_pwd_md5;//重复新密码
    
    private String static_pwd_rule; //密码规则
    
    private String is_static_create_or_update; //0为静态口令添加  1为静态口令重置
    
    private String upper_seed; //大写字母种子
    
    private String lower_seed; //大写字母种子
    
    private String number_seed; //数字种子
    
    private String special_seed; //特殊字符种子
    
    
    public String getIs_static_create_or_update() {
		return is_static_create_or_update;
	}

	public void setIs_static_create_or_update(String is_static_create_or_update) {
		this.is_static_create_or_update = is_static_create_or_update;
	}

	// 实现父类方法。返回主键属性名列表
    public String[] getKeyPropNames() {
        return KEY_PROPERTY_NAMES;
    }    

    /** 以下为get,set方法 */

	/**
	 * @return 返回 用户ID
	 */
    public String getUsr_id() {
      return this.usr_id;
    }
    /**
	 * @param usr_id
	 *            要设置的 用户ID
	 */
    public void setUsr_id(String usr_id) {
      this.usr_id = usr_id;
    }

	/**
	 * @return 返回 统一登录名
	 */
    public String getLogin_name() {
      return this.login_name;
    }
    /**
	 * @param login_name
	 *            要设置的 统一登录名
	 */
    public void setLogin_name(String login_name) {
      this.login_name = login_name;
    }

	/**
	 * @return 返回 用户类型
	 */
    public String getUsr_type() {
      return this.usr_type;
    }
    /**
	 * @param usr_type
	 *            要设置的 用户类型
	 */
    public void setUsr_type(String usr_type) {
      this.usr_type = usr_type;
    }

	/**
	 * @return 返回 用户姓名
	 */
    public String getUsr_name() {
      return this.usr_name;
    }
    /**
	 * @param usr_name
	 *            要设置的 用户姓名
	 */
    public void setUsr_name(String usr_name) {
      this.usr_name = usr_name;
    }

	/**
	 * @return 返回 所属机构
	 */
    public String getOrg_id() {
      return this.org_id;
    }
    /**
	 * @param org_id
	 *            要设置的 所属机构
	 */
    public void setOrg_id(String org_id) {
      this.org_id = org_id;
    }

	/**
	 * @return 返回 固定电话
	 */
    public String getPhone() {
      return this.phone;
    }
    /**
	 * @param phone
	 *            要设置的 固定电话
	 */
    public void setPhone(String phone) {
      this.phone = phone;
    }

	/**
	 * @return 返回 手机号码
	 */
    public String getMobile() {
      return this.mobile;
    }
    /**
	 * @param mobile
	 *            要设置的 手机号码
	 */
    public void setMobile(String mobile) {
      this.mobile = mobile;
    }

	/**
	 * @return 返回 邮箱
	 */
    public String getEmail() {
      return this.email;
    }
    /**
	 * @param email
	 *            要设置的 邮箱
	 */
    public void setEmail(String email) {
      this.email = email;
    }

	/**
	 * @return 返回 是否负责人
	 */
    public String getIs_leader() {
      return this.is_leader;
    }
    /**
	 * @param is_leader
	 *            要设置的 是否负责人
	 */
    public void setIs_leader(String is_leader) {
      this.is_leader = is_leader;
    }

	/**
	 * @return 返回 是否操作员
	 */
    public String getIs_operator() {
      return this.is_operator;
    }
    /**
	 * @param is_operator
	 *            要设置的 是否操作员
	 */
    public void setIs_operator(String is_operator) {
      this.is_operator = is_operator;
    }

	/**
	 * @return 返回 是否隐藏
	 */
    public String getIs_hide() {
      return this.is_hide;
    }
    /**
	 * @param is_hide
	 *            要设置的 是否隐藏
	 */
    public void setIs_hide(String is_hide) {
      this.is_hide = is_hide;
    }

	/**
	 * @return 返回 用户状态
	 */
    public String getUsr_status() {
      return this.usr_status;
    }
    /**
	 * @param usr_status
	 *            要设置的 用户状态
	 */
    public void setUsr_status(String usr_status) {
      this.usr_status = usr_status;
    }

	/**
	 * @return 返回 静态口令
	 */
    public String getStatic_pwd_md5() {
      return this.static_pwd_md5;
    }
    /**
	 * @param static_pwd_md5
	 *            要设置的 静态口令
	 */
    public void setStatic_pwd_md5(String static_pwd_md5) {
      this.static_pwd_md5 = static_pwd_md5;
    }
    
    /**
	 * @return 返回 发放形式
	 */
	public String getRelease_form() {
		return release_form;
	}

    /**
	 * @param release_form
	 *            要设置的 发放形式
	 */
	public void setRelease_form(String release_form) {
		this.release_form = release_form;
	}

	/**
	 * @return 返回 是否长期有效
	 */
    public String getIs_long_term() {
      return this.is_long_term;
    }
    /**
	 * @param is_long_term
	 *            要设置的 是否长期有效
	 */
    public void setIs_long_term(String is_long_term) {
      this.is_long_term = is_long_term;
    }

	/**
	 * @return 返回 生效时间
	 */
    public String getEffect_time() {
      return this.effect_time;
    }
    /**
	 * @param effect_time
	 *            要设置的 生效时间
	 */
    public void setEffect_time(String effect_time) {
      this.effect_time = effect_time;
    }

	/**
	 * @return 返回 失效时间
	 */
    public String getExpire_time() {
      return this.expire_time;
    }
    /**
	 * @param expire_time
	 *            要设置的 失效时间
	 */
    public void setExpire_time(String expire_time) {
      this.expire_time = expire_time;
    }

    
	/**
	 * @return 返回 是否首次登录
	 */
	public String getFirst_login() {
		return first_login;
	}

	/**
	 * @param first_login 
	 *            要设置的 是否首次登录 
	 */
	public void setFirst_login(String first_login) {
		this.first_login = first_login;
	}

	/**
	 * @return 返回 描述
	 */
    public String getUsr_desc() {
      return this.usr_desc;
    }
    /**
	 * @param usr_desc
	 *            要设置的 描述
	 */
    public void setUsr_desc(String usr_desc) {
      this.usr_desc = usr_desc;
    }

	/**
	 * @return 返回 节点ID
	 */
    public String getNode_id() {
      return this.node_id;
    }
    /**
	 * @param node_id
	 *            要设置的 节点ID
	 */
    public void setNode_id(String node_id) {
      this.node_id = node_id;
    }

	/**
	 * @return 返回 用户类型(decode)
	 */
/*	public String getUsr_type_decode() {
		if (StringUtil.isNotEmpty(usr_type_decode)) {
			return usr_type_decode;
		}
		
		Map<String,String> map = new HashMap<String,String>();
		map.put("type_code", TypeConst.USR_TYPE);
		map.put("type_value_code", usr_type);
		usr_type_decode = (String) CacheUtil.getProperty("P_TYPE_VALUE", "type_value_name", map);
		return usr_type_decode;
	}*/

    /**
	 * @param usr_type_decode
	 *            要设置的 用户类型(decode)
	 */
	public void setUsr_type_decode(String usr_type_decode) {
		this.usr_type_decode = usr_type_decode;
	}

	/**
	 * @return 返回 所属机构名称
	 */
	public String getOrg_name() {
		return org_name;
	}

    /**
	 * @param org_name
	 *            要设置的 所属机构名称
	 */
	public void setOrg_name(String org_name) {
		this.org_name = org_name;
	}

	/**
	 * @return 返回  机构排序号
	 */
	public String getOrg_sequence() {
		return org_sequence;
	}

	/**
	 * @param org_sequence 
	 *            要设置的  机构排序号 
	 */
	public void setOrg_sequence(String org_sequence) {
		this.org_sequence = org_sequence;
	}

	/**
	 * @return 返回 用户状态(decode)
	 */
/*	public String getUsr_status_decode() {
		Map<String,String> map = new HashMap<String,String>();
		map.put("type_code", TypeConst.USR_STATUS);
		map.put("type_value_code", usr_status);
		usr_status_decode = (String) CacheUtil.getProperty("P_TYPE_VALUE", "type_value_name", map);
		return usr_status_decode;
	}
*/
    /**
	 * @param usr_status_decode
	 *            要设置的 用户状态(decode)
	 */
	public void setUsr_status_decode(String usr_status_decode) {
		this.usr_status_decode = usr_status_decode;
	}

	/**
	 * @return 返回 公用属性
	 */
	public String getGlobal_release_form() {
		return global_release_form;
	}

	/**
	 * @param global_release_form 
	 *            要设置的 公用属性 
	 */
	public void setGlobal_release_form(String global_release_form) {
		this.global_release_form = global_release_form;
	}
	
	/**
	 * @return 返回 认证方式(decode)
	 */
/*	public String getRelease_form_decode() {
		if (StringUtil.isNotEmpty(release_form_decode) || StringUtil.isEmpty(release_form)) {
			return null;
		}
		
		Map<String,String> map = new HashMap<String,String>();
		map.put("type_code", TypeConst.PWD_RELEASE_FORM);
		map.put("type_value_code", release_form);
		release_form_decode = (String) CacheUtil.getProperty("P_TYPE_VALUE", "type_value_name", map);
		return this.release_form_decode;
	}*/

	/**
	 * @return 返回 是否监控
	 */
	public String getIs_monitor() {
		return is_monitor;
	}

	/**
	 * @param is_monitor 
	 *            要设置的 是否监控 
	 */
	public void setIs_monitor(String is_monitor) {
		this.is_monitor = is_monitor;
	}

	/**
	 * @return 返回time_policy_id
	 */
	public String getTime_policy_id() {
		return time_policy_id;
	}

	/**
	 * @param time_policy_id 
	 *            要设置的time_policy_id 
	 */
	public void setTime_policy_id(String time_policy_id) {
		this.time_policy_id = time_policy_id;
	}

	/**
	 * @return 返回 认证方式
	 */
	public String getAuth_mode() {
		return auth_mode;
	}

	/**
	 * @param auth_mode 
	 *            要设置的 认证方式
	 */
	public void setAuth_mode(String auth_mode) {
		this.auth_mode = auth_mode;
	}

	/**
	 * @return 返回 密码(注意：当认证方式为静态口令时，输入静态口令；当认证方式为动态口令（如RSA令牌，VASCO令牌）时，输入动态口令)
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password 
	 *            要设置的 密码(注意：当认证方式为静态口令时，输入静态口令；当认证方式为动态口令（如RSA令牌，VASCO令牌）时，输入动态口令)
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @return 返回新密码
	 */
	public String getNew_static_pwd_md5() {
		return new_static_pwd_md5;
	}

	/**
	 * @param new_static_pwd_md5 
	 *            要设置的新密码 
	 */
	public void setNew_static_pwd_md5(String new_static_pwd_md5) {
		this.new_static_pwd_md5 = new_static_pwd_md5;
	}

	/**
	 * @return 返回 重复新密码
	 */
	public String getRe_new_static_pwd_md5() {
		return re_new_static_pwd_md5;
	}

	/**
	 * @param re_new_static_pwd_md5 
	 *            要设置的 重复新密码 
	 */
	public void setRe_new_static_pwd_md5(String re_new_static_pwd_md5) {
		this.re_new_static_pwd_md5 = re_new_static_pwd_md5;
	}

	/**
	 * @return 返回密码规则
	 */
	public String getStatic_pwd_rule() {
		return static_pwd_rule;
	}

	/**
	 * @param static_pwd_rule 
	 *            要设置的密码规则 
	 */
	public void setStatic_pwd_rule(String static_pwd_rule) {
		this.static_pwd_rule = static_pwd_rule;
	}
	
	/**
	 * @return 返回 创建人
	 */
	public String getCreate_by() {
		return create_by;
	}

	/**
	 * @param create_by 
	 *            要设置的 创建人 
	 */
	public void setCreate_by(String create_by) {
		this.create_by = create_by;
	}
	
	/**
	 * @return 返回 创建时间
	 */
	public String getCreate_at() {
		return create_at;
	}

	/**
	 * @param create_at 
	 *            要设置的 创建时间 
	 */
	public void setCreate_at(String create_at) {
		this.create_at = create_at;
	}

	/**
	 * @return 返回 更新人
	 */
	public String getUpdate_by() {
		return update_by;
	}

	/**
	 * @param update_by 
	 *            要设置的 更新人 
	 */
	public void setUpdate_by(String update_by) {
		this.update_by = update_by;
	}

	/**
	 * @return 返回 更新时间
	 */
	public String getUpdate_at() {
		return update_at;
	}

	/**
	 * @param update_at 
	 *            要设置的 更新时间 
	 */
	public void setUpdate_at(String update_at) {
		this.update_at = update_at;
	}
	
	/**
	 * @return 返回 大写字母种子
	 */
	public String getUpper_seed() {
		return upper_seed;
	}

	/**
	 * @param upper_seed 
	 *            要设置的 大写字母种子 
	 */
	public void setUpper_seed(String upper_seed) {
		this.upper_seed = upper_seed;
	}

	/**
	 * @return 返回 小写字母种子
	 */
	public String getLower_seed() {
		return lower_seed;
	}

	/**
	 * @param lower_seed 
	 *            要设置的  小写字母种子 
	 */
	public void setLower_seed(String lower_seed) {
		this.lower_seed = lower_seed;
	}

	/**
	 * @return 返回  数字种子
	 */
	public String getNumber_seed() {
		return number_seed;
	}

	/**
	 * @param number_seed 
	 *            要设置的 数字种子 
	 */
	public void setNumber_seed(String number_seed) {
		this.number_seed = number_seed;
	}

	/**
	 * @return 返回 特殊字符种子
	 */
	public String getSpecial_seed() {
		return special_seed;
	}

	/**
	 * @param special_seed 
	 *            要设置的 特殊字符种子 
	 */
	public void setSpecial_seed(String special_seed) {
		this.special_seed = special_seed;
	}

	/**
	 * 将对象的内容以字符串的方式输出
	 */
    public String toString() {
        StringBuffer str = new StringBuffer();

        str.append(this.getClass().getName())
            .append("[ 用户ID=").append(this.usr_id)
            .append(", 统一登录名=").append(this.login_name)
            .append(", 用户类型=").append(this.usr_type)
            .append(", 用户姓名=").append(this.usr_name)
            .append(", 所属机构=").append(this.org_id)
            .append(", 固定电话=").append(this.phone)
            .append(", 手机号码=").append(this.mobile)
            .append(", 邮箱=").append(this.email)
            .append(", 是否负责人=").append(this.is_leader)
            .append(", 是否操作员=").append(this.is_operator)
            .append(", 是否隐藏=").append(this.is_hide)
            .append(", 用户状态=").append(this.usr_status)
            //.append(", 静态口令=").append(this.static_pwd_md5)
            .append(", 发放形式=").append(this.release_form)
            .append(", 是否长期有效=").append(this.is_long_term)
            .append(", 生效时间=").append(this.effect_time)
            .append(", 失效时间=").append(this.expire_time)
            .append(", 是否首次登录=").append(this.first_login)
            .append(", 描述=").append(this.usr_desc)
            .append(", 节点ID=").append(this.node_id)
            .append(", 时间策略ID=").append(this.time_policy_id)
            .append(", 创建人=").append(this.create_by)
            .append(", 创建时间=").append(this.create_at)
            .append(", 更新人=").append(this.update_by)
            .append(", 更新时间=").append(this.update_at)	            
            .append(" ]");

        return str.toString();
    }
}
